package cn.xerllent.wxtp.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.springframework.data.domain.Pageable;

import cn.xerllent.common.service.BaseService;
import cn.xerllent.wxtp.entity.WxCorp;
import cn.xerllent.wxtp.entity.WxDepartment;
import me.chanjar.weixin.cp.tp.service.WxCpTpService;


public interface WxDepartmentService extends BaseService<WxDepartment> {
	
    /**
     * 查询数据分页
     * @param searchtxt 条件
     * @param pageable 分页参数
     * @return Map<String, Object>
     */
    Map<String, Object> queryAll(WxDepartment filter, Pageable pageable);

    /**
     * 查询所有数据不分页
     * @param searchtxt 条件参数
     * @return List<WxDepartmentDto>
     */
    List<WxDepartment> queryAll(WxDepartment filter);

    /**
     * 导出数据
     * @param all 待导出的数据
     * @param response /
     * @throws IOException /
     */
    void download(List<WxDepartment> all, HttpServletResponse response) throws IOException;

	/**
	 * 清除对应Mapper的二级缓存，采用无害删除空数据模拟清空,因为二级缓存更新机制是本表数据更新即可清空<br>
	 * 提供本方法供联表更新查询的实时更新
	 * */
	void clearCache();

	/**
	 * 同步企业部门列表及用户到本地数据库
	 * @param wxCpTpService 应用api服务
	 * @param corp 企业应用对象
	 * @param withUsers 是否同时更新用户
	 */
	void syncDepartments(WxCpTpService wxCpTpService, WxCorp corp, boolean withUsers);
}
